home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / NEW / A-Newest / Quittner.d64 / tpug info-6 < prev    next >
Text File  |  2009-01-03  |  6KB  |  67 lines

  1. ║CM:TPUG-6
  2. ║PT5:CN1:JU0:PG61
  3. ├╧═╨╒╘┼╥ ├╧══╧─╧╥┼ 64 & ├64 ╔╬╞╧╥═┴╘╔╧╬-6:
  4. ║CM:┴S ON ╧CTOBER 27, 2007:
  5. ║CN0:PT10
  6.  
  7.      ═EMORY LOCATION (BYTE) 783 IS THE ╙TATUS ╥EGISTER CALLED .╨ AND IT HAS, JUST AS EVERY OTHER BYTE, 8 BITS THAT SERVE HERE AS INDICATORS AND ARE CALLED "FLAGS". ╞OR EXAMPLES THE ├ARRY FLAG (├) HAS VALUE 1; PEEK(783)AND1 RESULTS IN 0 IF ├ IS CLEAR, OR 1 IF SET. ╘HE ┌ERO FLAG (┌) HAS VALUE 2; PEEK(783)AND2 RESULTS IN 0 IF ┌ IS CLEAR, OR 2 IF SET; AND THE ╬EGATIVE FLAG (╬) HAS VALUE 128, WITH PEEK(783)AND128 RESULTING IN 0 IF ╬ IS CLEAR, OR 128 IF SET. ╘HESE FLAGS ARE VERY IMPORTANT IN MACHINE-LANGUAGE OPERATIONS.
  8.  
  9.      ═ACHINE LANGUAGE OPERATIONS ARE VERY FAST, AND HERE IS A PROGRAM TO SHOW JUST HOW MUCH FASTER THEY ARE THAN ┬┴╙╔├ WHILE COUNTING AND STORING A GIVEN VALUE INTO A GIVEN BYTE (MEMORY LOCATION).
  10.  
  11. 0 REM" ╙PEED DIFFERENCE
  12. 2 PRINT C╚(14)C╚(144)
  13. 10 REM"  ┼XAMPLE: ╠OADING 123 INTO MEMORY LOCATION 251 20X256=5120 TIMES
  14. 20 PRINT"╨LEASE ╫┴╔╘ ABOUT 45 SECONDS!
  15. 21 TI$="000000":FORI=1 TO 5120:POKE251,123:NEXT:T=TI
  16. 22 PRINT T"JIFFIES TO LOAD 123 INTO 251 20X256=5120 TIMES, USING ┬┴╙╔├
  17. 30 FORI=820 TO 1023:READ A:IF A>255 THEN 40
  18. 31 POKE I,A: NEXT: STOP
  19. 32 DATA  169,123, 162,0, 160,0, 133,251, 232, 208,251
  20. 33 DATA  200, 192,21, 208,246, 96
  21. 40 TI$= "000000":SYS 820: T=TI
  22. 41 PRINT T"JIFFIES TO LOAD 123 INTO 251 5120 TIMES VIA ═ACHINE ╠ANGUAGE":PRINT 
  23. 42 PRINT "  ╘HERE ARE A TOTAL OF 2 TO THE POWER OF 16=65536 MEMORY LOCATIONS. ";
  24. 43 PRINT "AND EACH 256 IS SAID TO BE ON A PAGE, 0 TO 255. ";
  25. 44 PRINT "251, BEING BELOW 256, IS ON PAGE ZERO. ":PRINT 
  26. 50 PRINT "╧PERATIONS INVOLVING PAGE ZERO ARE FASTER THAN LOCATIONS 256-65535.
  27. 51 PRINT "  ╬OW COMPARING THE SPEEDS OF LOADING 123 INTO 12345, 5120 TIMES:
  28. 100 REM "  123 INTO 12345, 5120 TIMES USING ┬┴╙╔├:
  29. 110 PRINT "      ╨LEASE ╫┴╔╘ ABOUT 57 SECONDS!
  30. 120 TI$="000000":FOR I=1 TO 5120: POKE  12345,123: NEXT :T=TI
  31. 121 PRINT "╔T TOOK"T"JIFFIES TO LOAD 123 INTO 12345 VIA ┬┴╙╔├ 5120 TIMES.
  32. 130 :C=12345:B=INT(C/ 256):A=C-256*B: PRINT A"+"B"*256="A+B*256:REM 57,48
  33. 133 DATA  169,123, 162,0, 160,0, 141,57,48
  34. 134 DATA  232, 208,250
  35. 135 DATA  200, 192,21, 208,245, 96
  36. 140 POKE 12345,0: POKE 251,0: POKE 780,21:TI$="000000":SYS837:T=TI
  37. 141 PRINT T"JIFFIES TO COUNT 5120 INTO 12345 VIA ═ACHINE ╠ANGUAGE": PRINT
  38. 200 REM " ╩UST COUNTING TO 10000; FIRST THE ┬┴╙╔├ SPEED:
  39. 201 PRINT " ╨LEASE WAIT ABOUT 2 MINUTES.
  40. 202 TI$="000000":I=0
  41. 203 I=I+1
  42. 204 IF I>10000 THEN T=TI
  43. 205 IF I>10000 THEN PRINT T" JIFFIES TO COUNT TO 10000 VIA ┬┴╙╔├.":GOTO210
  44. 206 GOTO 203
  45. 210 C=10000:B=INT(C/256):A=C-256*B:    PRINT "A=16, B=39
  46. 211 PRINT "═ACHINE LANGUAGE: WE GET .╪ TO GO TO 256 39 ";
  47. 212 PRINT "TIMES, AND THEN COUNT 16 MORE.
  48. 220 DATA  162,0, 160,0, 232, 208,253
  49. 221 DATA  200, 192,40, 208,248
  50. 222 DATA  232, 224,17, 208,251, 96, 999
  51. 230 TI$="000000":SYS855:T=TI
  52. 231 PRINT "╒SING MACHINE LANGUAGE,IT ONLY TOOK"T"JIFFIES.
  53.  
  54.      LINE 2: ├HARACTER STRING 14 SETS ╒PPERCASE/LOWER CASE TEXT MODE (NOT UPPER CASE/GRAPHICS), AND C╚(144) SETS THE TEXT COLOUR TO BLACK.
  55.      ╠INE 21: ╘HE ELAPSED TIME CAN BE MEASURED IN JIFFIES; THERE ARE 60 JIFFIES IN EACH SECOND. ╘HE RESERVED VARIABLE TI IS USED BY ┬┴╙╔├ TO COUNT JIFFIES. ╙ETTING TI$ TO ALL ZEROS ALSO SETS TI TO ZERO.
  56.      ╠INES 30 AND 31 LOAD THE MACHINE LANGUAGE DATA STATEMENTS INTO WHATEVER IS NEEDED INTO MEMORY STARTING AT 820.
  57.      ╠INES 32 AND 33 CONTAIN THE MACHINE LANGUAGE TO STORE THE NUMBER 123 INTO MEMORY LOCATION 251 5120 TIMES. 169 IS THE OP-CODE TO LOAD THE NUMBER FOLLOWING THE OP-CODE, CALLED AN OPERAND, HERE 123, INTO THE ACCUMULATOR (.┴, INTO MEMORY LOCATION 780) AND ALSO, MAYBE, SET A FLAG IN THE STATUS REGISTER (.╨ AT 783). ╘HIS DEPENDS ON THE OPERAND NUMBER GETTING LOADED INTO .┴, HERE 123. ╔F THE NUMBER IS ZERO, THEN THE ZERO FLAG (┌) IS SET, MEANING THAT BIT 1 (VALUE 2) OF 783 IS SET (TO 1). ╔F THE OPERAND IS GREATER THAN 128 (THE MAXIMUM CONTENT OF BYTES IS 255) THEN THE NEGATIVE FLAG (╬), BIT 7 OF 783, VALUE 128, IS SET. 123 IS NEITHER, AND BITS 1 AND 7 OF .╨ ARE BOTH CLEAR, ZERO.
  58.      ╘HE NEXT OP-CODE IS 162 (LDX), AND ITS OPERAND IS ZERO. 162 (STX) LOADS THE OPERAND INTO REGISTER .╪ (LOCATION 781) AND, IF REQUIRED, SETS THE ┌ OR ╬ FLAG; THE OPERAND HERE BEING ZERO, THE ┌ FLAG WILL BE SET, WHILE THE ╬ FLAG WILL BE CLEAR.
  59.      ╬EXT, (STY) 160 0, LOADS ZERO INTO .┘ (LOCATION 782), AND AGAIN THE ┌ FLAG IS SET.
  60.      ╬EXT, (STA) 133 251 STORES INTO 251 WHATEVER IS IN .┴ (HERE 123) FOR THE FIRST TIME. 133 NEVER SETS ANY FLAGS.
  61.      ╬EXT, (INX) 232 WHICH NEEDS NO OPERAND INCREMENTS .╪ (ADDS 1 TO ITS VALUE, BUT AFTER 255 COMES ZERO AGAIN) AND THEN, DEPENDING ON THE INCREMENTED VALUE OF .╪ MAY SET THE EITHER THE ┌ OR ╬ FLAGS, OR NEITHER. ╚ERE WE NOW HAVE 1 IN .╪ WITH THE ┌ AND ╬ FLAGS BOTH BEING CLEAR (=0).
  62.      ╘HE NEXT OPCODE, (BNE=BRANCH IF NOT EQUAL OR NOT ZERO) 208 HAS ONE VERY IMPORTANT OPERAND. ┬ECAUSE IN THIS EXAMPLE THE ┌ FLAG IS CLEAR THERE WILL BE A BRANCH, AND THE OPERAND WILL DETERMINE WHERE TO. ╫E WANT TO GO BACK TO OP-CODE 133 FROM THE 208 WHERE WE ARE NOW. ├OUNTING BACK IN THE PROGRAM, STARTING WITH 254, WE HAVE 208=254, 232=253, 251=252, 133, THE TARGET,=251. ╘HEREFORE WE SET THE OPERAND OF 208 TO 251 TO COMPLETE THE LOOP BACK TO 133. ┴GAIN AND AGAIN THE CONTENT OF .┴ WILL BE STORED INTO 251 UNTIL, AFTER THE 256TH TIME, 251 HAS BEEN INCREMENTED TO ZERO, AND THE ┌ FLAG HAS BEEN SET THEREFORE. ╘HAT CHANGES 208 TO NO BRANCH, TO (INY) 200 WHICH HAS NO OPERAND, BUT MAY SET EITHER THE ┌ OR THE ╬ FLAG, DEPENDING ON THE CONTENT OF.┘
  63.      ╚ERE .┘ IS NOW 1, BUT WE NEED IT TO GO TO 21 AT WHICH POINT .╪ HAS ALREADY COUNTED 20X256=5120 TIMES AS REQUIRED IN THIS EXAMPLE. ╧P-CODE 192 (CPY) COMPARES .┘ WITH THE CONTENT OF THE OPERAND OF 192, HERE 21, AND SETS DEPENDING ON THE CONTENT OF .┘ THE ╬, ┌, OR ├ (=CARRY) FLAGS. ┴S SOON AS .┘ REACHES 21 THE .┌ FLAG IS SET, AND THE NEXT OP-CODE, 208, NO LONGER BRANCHES BACK TO 133, BUT CARRIES ON TO THE NEXT OP-CODE, 96, WHICH RETURNS TO ┬┴╙╔├ AND RE-ENABLES THE KEYBOARD. ╘HE OPERAND OF THE 208 IS ARRIVED AT BY COUNTING BACK TO 133 FROM 254 AS BEFORE: 208=254, 21=253, 192=252, 200=251, 251=250, 208=249, 232=248, 251=247, AND THE TARGET 133=246. ═OVING BACK TO A TARGET RESULTS IN A COUNTBACK FROM 254, WHILE COUNTING FORWARD TO A TARGET RESULTS IN THE NUMBER OF SKIPPS.
  64.  
  65. ║PT20:CN1
  66.    ┬Y ╩OE ╤UITTNER, ╘╨╒╟, ╬OVEMBER 15, 2007
  67.